//список тегов
struct _TagLine {
    GtkWidget *tag_line;
    int tag_count;
    char **tag_vector;
    int tag_vector_size;
    void (*tag_clicked_event)(GtkObject *, gpointer);
};

typedef struct _TagLine TagLine;

//создаёт новый текстовый вектор
char **alloc_text_vector(int size);

//расширяет текстовый вектор размера size до размера new_size
char **expand_text_vector(char ***vector, int *size, const int new_size);

void free_elem_from_text_vector(char **vector, int *elem_count, char *elem);

//создаёт теглайн с вертикальным расположением тегов
TagLine *new_vtag_line(void (*tag_clicked_event)(GtkObject *, gpointer));

//создаёт теглайн с горизонтальным расположением тегов
TagLine *new_htag_line(void (*tag_clicked_event)(GtkObject *, gpointer));

//добавляет в теглайн тег с именем tag
void add_to_tagline(TagLine *tagline, const char *tag);

//добавляет теги из вектора tagsv
void add_tags_to_tagline(TagLine *tagline, char **tagsv);
